package domain.entities;

import javax.persistence.*;
import java.util.Collections;
import java.util.Date;
import java.util.LinkedHashMap;

import static javax.persistence.GenerationType.IDENTITY;

/**
 * Informedconsents entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "informedconsents", catalog = "bms")
public class Informedconsents implements java.io.Serializable {

	// Fields

	private Integer id;
	private ProtocoloCentro protocoloCentro;
	private Date approvalCcis;
	private Date approvalMoh;
	private Date approvalMoj;
    private Date approvedLocalEc;
    private Date approvedExternalEc;
    private Date approvedTc;
	private Date cartaNoVotoEc;
	private Date cartaNoVotoTc;
	private Date coeis;
	private Date dated;
    private String description;
    private String version;
    private Date readyForImplementation;
	private Date receivedBms;
	private Date recepcionCopiaSellada;
	private Date sampleIcfreviewForm;
	private Date sentToExternalEc;
    private Date sentToLocalEc;
    private Date sentToccis;
    private Date sentToMoh;
	private Date sentToSite;
	private Date sentToTc;
	private Date siteIcfreviewForm;
    private String comments;
    private Integer scope;

    public static final String CLASSTITLE = "Informed Consents";
    public static final LinkedHashMap<String, String> TITULOS = new LinkedHashMap<String, String>(
            Collections.unmodifiableMap(
                    new LinkedHashMap<String, String>() {
                        {
                            put("description", "Name");
                            put("version", "Version");
                            put("comments", "Comments");
                            put("dated", "Dated");
                            put("receivedBms", "Received BMS");
                            put("sentToSite", "Sent to Site");
                            put("sentToExternalEc", "Sent to External EC");
                            put("approvedExternalEc", "Approved/Notified External EC");
                            put("sentToLocalEc", "Sent to Local EC");
                            put("approvedLocalEc", "Approved/Notified Local EC");
                            put("cartaNoVotoEc", "Carta de no voto (si aplicara)");
                            put("sentToTc", "Sent to Teaching Committee");
                            put("approvedTc", "Approved/Notified Teaching Committee");
                            put("cartaNoVotoTc", "Carta de no voto (si aplicara)");
                            put("coeis", "COEIS");
                            put("recepcionCopiaSellada", "Date of receipt of the  stamped IC  (by EC)");
                            put("sentToMoh", "Sent to MOH");
                            put("approvalMoh", "MOH approved");
                            put("sentToccis", "Sent to CCIS");
                            put("approvalCcis", "CCIS Approval");
                            put("readyForImplementation", "Ready for site implementation");
                            put("siteIcfreviewForm", "SITE ICF Review Form ( for versions approved by MOH)");
                        }
                    }
            )
    );




    // Constructors

	/** default constructor */
	public Informedconsents() {
	}

	/** minimal constructor */
	public Informedconsents(ProtocoloCentro protocoloCentro) {
		this.protocoloCentro = protocoloCentro;
	}

	/** full constructor */
	public Informedconsents(ProtocoloCentro protocoloCentro, Date approvalCcis,
			Date approvalMoh, Date approvalMoj, Date approvedLocalEc,
			Date approvedTc, Date cartaNoVotoEc, Date cartaNoVotoTc,
			Date coeis, Date dated, String description,
			Date readyForImplementation, Date receivedBms,
			Date recepcionCopiaSellada, Date sampleIcfreviewForm,
			Date sentToExternalEc, Date sentToLocalEc, Date sentToMoh,
			Date sentToSite, Date sentToTc, Date siteIcfreviewForm) {
		this.protocoloCentro = protocoloCentro;
		this.approvalCcis = approvalCcis;
		this.approvalMoh = approvalMoh;
		this.approvalMoj = approvalMoj;
		this.approvedLocalEc = approvedLocalEc;
		this.approvedTc = approvedTc;
		this.cartaNoVotoEc = cartaNoVotoEc;
		this.cartaNoVotoTc = cartaNoVotoTc;
		this.coeis = coeis;
		this.dated = dated;
		this.description = description;
		this.readyForImplementation = readyForImplementation;
		this.receivedBms = receivedBms;
		this.recepcionCopiaSellada = recepcionCopiaSellada;
		this.sampleIcfreviewForm = sampleIcfreviewForm;
		this.sentToExternalEc = sentToExternalEc;
		this.sentToLocalEc = sentToLocalEc;
		this.sentToMoh = sentToMoh;
		this.sentToSite = sentToSite;
		this.sentToTc = sentToTc;
		this.siteIcfreviewForm = siteIcfreviewForm;
	}

	// Property accessors
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id", unique = true, nullable = false)
	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumns( {
			@JoinColumn(name = "PROTOCOLO_CENTROCENTROid", referencedColumnName = "CENTROid", nullable = false),
			@JoinColumn(name = "protocolo_centroprotocolo_compromisopaisprotocoloid", referencedColumnName = "protocolo_compromisopaisprotocoloid", nullable = false),
			@JoinColumn(name = "protocolo_centroprotocolo_compromisopaiscompromisopaisid", referencedColumnName = "protocolo_compromisopaiscompromisopaisid", nullable = false) })
	public ProtocoloCentro getProtocoloCentro() {
		return this.protocoloCentro;
	}

	public void setProtocoloCentro(ProtocoloCentro protocoloCentro) {
		this.protocoloCentro = protocoloCentro;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "approvalCCIS", length = 10)
	public Date getApprovalCcis() {
		return this.approvalCcis;
	}

	public void setApprovalCcis(Date approvalCcis) {
		this.approvalCcis = approvalCcis;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "approvalMOH", length = 10)
	public Date getApprovalMoh() {
		return this.approvalMoh;
	}

	public void setApprovalMoh(Date approvalMoh) {
		this.approvalMoh = approvalMoh;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "approvalMOJ", length = 10)
	public Date getApprovalMoj() {
		return this.approvalMoj;
	}

	public void setApprovalMoj(Date approvalMoj) {
		this.approvalMoj = approvalMoj;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "approvedLocalEC", length = 10)
	public Date getApprovedLocalEc() {
		return this.approvedLocalEc;
	}

	public void setApprovedLocalEc(Date approvedLocalEc) {
		this.approvedLocalEc = approvedLocalEc;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "approvedTC", length = 10)
	public Date getApprovedTc() {
		return this.approvedTc;
	}

	public void setApprovedTc(Date approvedTc) {
		this.approvedTc = approvedTc;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "cartaNoVotoEC", length = 10)
	public Date getCartaNoVotoEc() {
		return this.cartaNoVotoEc;
	}

	public void setCartaNoVotoEc(Date cartaNoVotoEc) {
		this.cartaNoVotoEc = cartaNoVotoEc;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "cartaNoVotoTC", length = 10)
	public Date getCartaNoVotoTc() {
		return this.cartaNoVotoTc;
	}

	public void setCartaNoVotoTc(Date cartaNoVotoTc) {
		this.cartaNoVotoTc = cartaNoVotoTc;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "COEIS", length = 10)
	public Date getCoeis() {
		return this.coeis;
	}

	public void setCoeis(Date coeis) {
		this.coeis = coeis;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "dated", length = 10)
	public Date getDated() {
		return this.dated;
	}

	public void setDated(Date dated) {
		this.dated = dated;
	}

	@Column(name = "description")
	public String getDescription() {
		return this.description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "readyForImplementation", length = 10)
	public Date getReadyForImplementation() {
		return this.readyForImplementation;
	}

	public void setReadyForImplementation(Date readyForImplementation) {
		this.readyForImplementation = readyForImplementation;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "receivedBMS", length = 10)
	public Date getReceivedBms() {
		return this.receivedBms;
	}

	public void setReceivedBms(Date receivedBms) {
		this.receivedBms = receivedBms;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "recepcionCopiaSellada", length = 10)
	public Date getRecepcionCopiaSellada() {
		return this.recepcionCopiaSellada;
	}

	public void setRecepcionCopiaSellada(Date recepcionCopiaSellada) {
		this.recepcionCopiaSellada = recepcionCopiaSellada;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "sampleICFreviewForm", length = 10)
	public Date getSampleIcfreviewForm() {
		return this.sampleIcfreviewForm;
	}

	public void setSampleIcfreviewForm(Date sampleIcfreviewForm) {
		this.sampleIcfreviewForm = sampleIcfreviewForm;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "sentToCentralEC", length = 10)
	public Date getSentToExternalEc() {
		return this.sentToExternalEc;
	}

	public void setSentToExternalEc(Date sentToExternalEc) {
		this.sentToExternalEc = sentToExternalEc;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "sentToLocalEC", length = 10)
	public Date getSentToLocalEc() {
		return this.sentToLocalEc;
	}

	public void setSentToLocalEc(Date sentToLocalEc) {
		this.sentToLocalEc = sentToLocalEc;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "sentToMOH", length = 10)
	public Date getSentToMoh() {
		return this.sentToMoh;
	}

	public void setSentToMoh(Date sentToMoh) {
		this.sentToMoh = sentToMoh;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "sentToSite", length = 10)
	public Date getSentToSite() {
		return this.sentToSite;
	}

	public void setSentToSite(Date sentToSite) {
		this.sentToSite = sentToSite;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "sentToTC", length = 10)
	public Date getSentToTc() {
		return this.sentToTc;
	}

	public void setSentToTc(Date sentToTc) {
		this.sentToTc = sentToTc;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "siteICFreviewForm", length = 10)
	public Date getSiteIcfreviewForm() {
		return this.siteIcfreviewForm;
	}

	public void setSiteIcfreviewForm(Date siteIcfreviewForm) {
		this.siteIcfreviewForm = siteIcfreviewForm;
	}

    @Temporal(TemporalType.DATE)
    @Column(name = "approvedExternalEc", length = 10)
    public Date getApprovedExternalEc() {
        return approvedExternalEc;
    }

    public void setApprovedExternalEc(Date approvedExternalEc) {
        this.approvedExternalEc = approvedExternalEc;
    }

    @Temporal(TemporalType.DATE)
    @Column(name = "sentToccis", length = 10)
    public Date getSentToccis() {
        return sentToccis;
    }

    public void setSentToccis(Date sentToccis) {
        this.sentToccis = sentToccis;
    }

    @Column(name = "version")
    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    @Column(name = "comments")
    public String getComments() {
        return comments;
    }

    public void setComments(String comments) {
        this.comments = comments;
    }

    @Column(name = "scope")
    public Integer getScope() {
        return scope;
    }

    public void setScope(Integer scope) {
        this.scope = scope;
    }
}